2018카카오 [3차]n진수게임

2022-07-25-2018카카오-[3차]n진수게임

목차

01.설계

02.소스코드

01.설계

image-20220725211935129

  • n진법에 따라 문자가 다르기 때문에 따로 배열에 저장하고

    • 가져다 쓰는 형식으로 진행

02.소스코드

  • 개선전 코드

    #include <string>
    #include <vector>
    
    using namespace std;
    char numberChar[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
    
    string nChange(int changeNumber, int nNumber) {
    	string nString;
    	while (changeNumber / nNumber!=0) {
    		string temp = nString;
    		nString = numberChar[changeNumber%nNumber];
    		nString += temp;
    		changeNumber /= nNumber;
    	}
    	string temp = nString;
    	nString = numberChar[changeNumber%nNumber];
    	nString += temp;
    	changeNumber /= nNumber;
    	return nString;
    }
    
    string solution(int n, int t, int m, int p) {
    	string answer = "";
    	string s;
    	int Cnt = 0;
    	for (int i = 0; i < t*m; i++)s+=nChange(i, n);
    	for (int i = p - 1, cnt = 0; i < s.length(), cnt<t; i += m) {
    		answer += s[i];
    		cnt++;
    	}
    
    	return answer;
    }
    
    int main(void) {
    	string a = nChange(10, 2);
    }
  • 리팩토링

    #include <string>
    #include <vector>
    #include <algorithm>
    using namespace std;
    char numberChar[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
    
    string nChange(int changeNumber, int number)
    {
    	string nString;
    	while (changeNumber / number != 0) {
    		nString += numberChar[changeNumber%number];
    		changeNumber /= number;
    	}
    	nString += numberChar[changeNumber%number];
    	changeNumber /= number;
    	reverse(nString.begin(), nString.end());
    	return nString;
    }
    
    string solution(int n, int t, int m, int p) {
    	string answer = "";
    	string s;
    	int Cnt = 0;
    	for (int i = 0; i < t*m; i++) s += nChange(i, n);
    	for (int i = p - 1, cnt = 0; i < s.length(), cnt<t; i += m) {
    		answer += s[i];
    		cnt++;
    	}
    
    	return answer;
    }
    
    int main(void) {
    	string a = solution(16, 16, 2, 1);
    }

Written by@[KyeongMinPark]
Docker, C++, C#, Java, Golang으로 개발 모니터링운영 및 개발, 자원수집기 Beat & Exporter 개발 Gitlab Runner CI/CD & Hugo 연동과 테스트코드및 등을 공부와 개발중 ORM, TDD, BDD, DDD, DesignPattern, WebAssembly Studying

GitHub